﻿Imports System.Data.Common

Public Class Consecutivo
    Public CODIGO, VIGENCIA, DESCRIPCION As String
    Public NUMERO As Decimal
    Public FECHA As DateTime

    Public Shared Function exist(ByRef cons As Consecutivo) As Boolean
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from CONSECUTIVO where CODIGO=@CODIGO"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.CODIGO, "CODIGO"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If

        If dtConsulta.Rows.Count <= 0 Then
            Return False
        Else
            Return True
        End If
    End Function

    Public Shared Function Nuevo(ByRef cons As Consecutivo) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "INSERT INTO CONSECUTIVO (CODIGO,NUMERO,FECHA,VIGENCIA,DESCRIPCION) " + _
                        "VALUES (@CODIGO,@NUMERO,@FECHA,@VIGENCIA,@DESCRIPCION)"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.CODIGO, "CODIGO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.NUMERO, "NUMERO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInFecha(conexion, cons.FECHA, "FECHA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.VIGENCIA, "VIGENCIA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.DESCRIPCION, "DESCRIPCION"))
            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function Actualizar(ByRef cons As Consecutivo) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "UPDATE CONSECUTIVO SET NUMERO=@NUMERO,FECHA=@FECHA,VIGENCIA=@VIGENCIA,DESCRIPCION=@DESCRIPCION WHERE CODIGO=@CODIGO"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.CODIGO, "CODIGO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.NUMERO, "NUMERO"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInFecha(conexion, cons.FECHA, "FECHA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.VIGENCIA, "VIGENCIA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.DESCRIPCION, "DESCRIPCION"))
            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function Eliminar(ByRef cons As Consecutivo) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "delete from CONSECUTIVO where CODIGO=@CODIGO"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, cons.CODIGO, "CODIGO"))
            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function obtenerNumero(ByVal codigo As String, conexion As ConexionBD.ConexionBD) As Resultado
        Dim oResultado As New Resultado
        Dim sentencia As String
        Dim ok As Boolean = False
        Dim num As Double
        sentencia = "SP_CONSECUTIVO"
        conexion.VerificaParametroError = "N"
        conexion.ParametroEntrada = New List(Of DbParameter)
        conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, codigo, "P_CODIGO"))
        conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutNumeric(conexion, num, "P_NUMERO"))
        ok = conexion.EjecutarProcedimiento(sentencia)
        oResultado.ExisteError = conexion.ExisteError
        oResultado.Mensaje = conexion.mensaje
        If Not oResultado.ExisteError Then
            oResultado.NumSoporte = conexion.ParametroSalida.Parameters("P_NUMERO").Value
        End If
        Return oResultado
    End Function

    Public Shared Function ConsultarAll() As DataTable
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "SELECT * FROM CONSECUTIVO"
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

End Class
